In every modern organization of any size, whether in an academic or industrial setting, there is a proliferation of desktop systems (or personal computers or workstations, all terms which will be used interchangeably herein). These systems are almost always connected to a network but are primarily geared toward interactive desktop computations in response to the needs and uses of an end user (called the “interactive workload” of the workstation). A characteristic of these systems is that they are relatively resource rich (in terms of CPU (central processing unit) power, memory and disk capacity) but are utilized for only a small fraction of the time during the day. Even during peak working hours when they are in use, the average utilization of these machines is far less than their peak capacity. As an example, one study of CPU utilization in the workstations of typical software developers found that the average CPU utilization during working hours was less than 10%, dropping to near 0% during non-working hours. In any event, it is well accepted by those skilled in the art that networked desktop systems represent vast computing resources that are severely under utilized.
The revolutionary increases in processor speed, disk size and speed and the rapidly decreasing cost per increment of other resources, like RAM (Random Access Memory) over the past several years have far outstripped the increasing resource demands of new workstation applications. As a result, this under utilization of workstation resources is worsening. It is also an accepted fact that the vast majority of the useful interactive cycles (or “power”) of the CPU in a typical workstation are used to create, modify and maintain the graphical user interface (GUI). But, modern system architectures increasingly include specialized and complex graphics processors (or graphics adapters) which offload much of the GUI-related workload from the main CPU, further increasing the opportunity represented by excess capacity.
It would clearly be desirable to be able to make meaningful use of this excess capacity by tying these networked workstations together somehow and utilizing the CPU cycles that are going to waste. When considering such an effort, however, one quickly encounters several concerns. These potential problems include (i) degradation of performance of the workstation with respect to its interactive workload due to the sharing of resources, (ii) concerns about the integrity of the workstation and the interactive workload due to exposure to an external, shared workload and (iii) the sheer complexity of infrastructure needed to meaningfully harness and manage the distributed resources.
Others have examined some of these issues and proposed solutions. In particular, method and standards have been developed and are evolving with respect to sharing and utilizing resources across machines in a network. This is known as “grid computing” or simply “grids” and techniques employed there are well known to those reasonably skilled in the arts relevant to the present invention. Two industry articles which may be referenced for general background information on grids are The Physiology of the Grid: An Open Grid Services Architecture for Distributed Systems Integration, by I. Foster et al, published by an organization known as Globus at their Internet web site in June 1992; and The Grid: Blueprint for a New Computing Infrastructure, by I. Foster et al, Morgan Kaufman, 1999. To the extent these papers are helpful in understanding the background of the present invention, they are incorporated by reference herein in their entirety.
The proposed and developing grid standards address the problems of managing the complexity of utilizing the shared resources of the workstations in the grid. However, typical grid environments include workstations (or grid nodes) that are dedicated to performing work assigned by the grid (called the grid workload)—that is, the workstations do not have an interactive workload to contend with. For this reason, the grid techniques and standards which have been developed do not address the other concerns mentioned above, namely the potential performance and integrity impacts on the individual workstations of sharing their under utilized resources with the grid. Therefore, known grid methods and implementations need to be improved so that it can be ensured that any grid workload assigned to a network workstation must be able to be instantly preempted so that the workstation's interactive performance is not compromised. It also must be ensured that failures or faults occurring while executing the grid workload cannot compromise the integrity of the interactive workload.
For these reasons, and others readily identified by those skilled in the art, it would be desirable to develop techniques to allow the sharing of under utilized resources on the workstations in a computer network using known grid computing standards while maintaining the integrity and performance parameters of the individual workstations relative to their interactive workload.